Закрыть окно         Список других текстов темы "Юмор"

Эмулятор БЕЙСИКа ДВК

       PROGRAM BASIC
       BYTE L(80),LL
       REAL R(20)
       EQUIVALENCE (R(1),L(1))
       DATA PR/4HPRIN/,RLIST/4HLIST/,BYE/4HBYE /,EOT/4HEND /
       TYPE *,'               БЕЙСИК ДВК НЦ'
       TYPE 20
20     FORMAT ('$НУЖНЫ ЛИ ВАМ РАСШИРЕННЫЕ ФУНКЦИИ? (Y/N)')
       ACCEPT 3,LL
3      FORMAT (A1)
       IF (LL.NE.'Y') GOTO 15
       TYPE *,' ПОГОДИ, СЕЙЧАС РАСШИРЮ '
       DO 16 I=1,8
         DO 17 J=1,32767
17       CONTINUE
       TYPE 18
18     FORMAT ('$ РАСШИРЯЮ...')
16     CONTINUE
       TYPE *,'   РАСШИРИЛА !'
       GOTO 2
C
15     TYPE 21
21     FORMAT ('$А КЛАВИАТУРА? (Y/N)')
       ACCEPT 3,LL
       IF (LL.EQ.'Y') GOTO 2
       TYPE *,'НУ И НЕ НАДО !'
       CALL BRY
C
2      TYPE *,' ЖДУ'
       IFLAG=0
       CALL SCCA(IFLAG)
       READ (5,1,END=5) N,(L(I),I=1,80)
1      FORMAT (Q,80A1)
       IF (N.EQ.0) GOTO 2
       IF (IFLAG.EQ.0) GOTO 14
       TYPE *,' Я ТЕБЕ НАЖМУ  ^C ^C  !!!'
       GOTO 2
C
14     IF (R(1).NE.PR) GOTO 6
       TYPE 10,(L(I),I=7,67)
10     FORMAT (60A1)
       GOTO 2
C
6      IF (L(1).LT.'1'.OR.L(1).GT.'9') GOTO 4
       TYPE *,' НУ, ЕЩЕ РАЗИК ...'
       GOTO 2
C
4      IF (R(1).NE.BYE) GOTO 11
       TYPE *,' НАПРАСНО ТЫ МЕНЯ ПОКИДАЕШЬ,'
       TYPE *,' МНЕ С ТОБОЙ БЫЛО ХОРОШО.'
       TYPE *,' ПОИГРАЕМ В ПАРОВОЗИК...'
       TYPE *,' НАЖМИ КНОПОЧКУ...'
       CALL BRY
C
11     IF (R(1).NE.EOT) GOTO 12
       TYPE *,' А СЛОВО ЗНАЕШЬ ?'
       READ (5,101,END=102) PAR
101    FORMAT (A4)
       IF (PAR.NE.4HPASS) GOTO 102
       TYPE *,' ПРИВЕТ! ДО НОВЫХ ВСТРЕЧ!'
       CALL EXIT
102    TYPE *,' НЕ ЗНАЕШЬ...'
       TYPE 103
103    FORMAT (///'?KMON-F-SYSTEM HANDE HOCH !!!')
       TYPE *,' ВОТ ТАК!'
       CALL BRY
C
12     IF (R(1).NE.RLIST) GOTO 13
       DO 23 I=1,20
         DO 25 J=1,50
           L(J)=32+32*RAN(I,J)
25       CONTINUE
         TYPE 26,I,(L(J),J=1,50)
         IFLAG=0
         CALL SCCA(IFLAG)
         IF (IFLAG.NE.0) TYPE *,' НЕТ, ТЫ ДОСМОТРИ!'
23     CONTINUE
26     FORMAT (1X,I3,1X,50A1)
       GOTO 2
C
13     TYPE *,' ОШИБК 1 СТРОКЕ 0'
       GOTO 2
C
5      TYPE *,' У-У-У-У-У !!!  НАПУГАЛ !!!'
       GOTO 2
       END



       .GLOBL BRY
START:
BRY:   MOV -(PC),-(PC)
       .END START

Примечание составителя.

Эта программа была реализована на СМ-4 в операционной системе РАФОС (RT-11) в 239 физико-математической школе г.Ленинграда. Всякий, кто хоть раз садился за ДВК и пытался работать на местном БЕЙСИКе, поймет намеки, которыми изобилует сей программный продукт.

Для тех, кто не совсем хорошо знаком с нестандартными возможностями ФОРТРАНа РАФОС, привожу краткие комментарии:

1. Выполнение почти каждой программы в РАФОСе можно прервать, нажав CTRL/C. Стандартная подпрограмма SCCA позволяет программе различать CTRL/C, устанавливая FLAG в 1 при двойном нажатии этой комбинации клавиш.

2. Что делает ассемблерная подпрограмма BRY? Это так называемый "чертик" (хотя есть и другие варианты названия). Он состоит из одной команды, которая пересылает сама себя в предыдущее слово памяти и передает туда управление. Понятно, что из нее нет выхода. Результатом работы "чертика" является затирание всей памяти его кодом. При этом терминал, так как стирается его драйвер, зависает и при нажатии любой клавиши лишь гудит, что и обыгрывается в программе.

Вот, вроде, и все.

Счастливой работы в эмуляторе

БЕЙСИК ДВК !!!

Закрыть окно         Список других текстов темы "Юмор"